﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using System.Text;
using System.Data.SqlClient;
using BibliotecaProjeto.bicicleta;
using System.Windows.Forms;

namespace BibliotecaProjeto.bicicleta
{
    public class DadosBicicleta : persistencia.ConexaoSqlServer
    {



        #region Atributos
        private string instSql;
        #endregion

        #region Construtores
        /// <summary>
        /// Construtor da Classe
        /// </summary>
        #endregion
        public DadosBicicleta() { }

        #region Métodos
        #region conexão com select
        // método Listar
        public List<Bicicleta> selectBicicleta()
        {
            List<Bicicleta> retorno = new List<Bicicleta>();
            try
            {
                abrirConexao();
                SqlCommand cmd = new SqlCommand("SELECT bic_codigo, bic_marca, bic_modelo, bic_fabricante FROM administrador ", conBD);
                SqlDataReader DbReader = cmd.ExecuteReader();

                while (DbReader.Read())
                {
                    Bicicleta b = new Bicicleta();
                    b.codigo = DbReader.GetString(DbReader.GetOrdinal("bic_codigo"));
                    b.marca = DbReader.GetString(DbReader.GetOrdinal("bic_marca"));
                    b.modelo = DbReader.GetString(DbReader.GetOrdinal("bic_modelo"));
                    b.fabricante = DbReader.GetString(DbReader.GetOrdinal("bic_fabricante"));
                    retorno.Add(b);
                }

                DbReader.Close();
                cmd.Dispose();
                fecharConexao(); ;
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao conectar e selecionar " + ex.Message);
            }
            return retorno;
        }
        #endregion

        // método cadastrar
        public void cadastrar(Bicicleta bicicleta)
        {

            try
            {
                SqlCommand cmd = conBD.CreateCommand();
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "inserirBicicleta";

                cmd.Parameters.Add(new SqlParameter("@codigo", bicicleta.codigo));
                cmd.Parameters.Add(new SqlParameter("@marca", bicicleta.marca));
                cmd.Parameters.Add(new SqlParameter("@modelo", bicicleta.modelo));
                cmd.Parameters.Add(new SqlParameter("@fabricante", bicicleta.fabricante));

                cmd.Prepare();
                abrirConexao();
                cmd.ExecuteNonQuery();
                fecharConexao();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }


        // método atualizar
        public void atualizar(Bicicleta bicicleta)
        {
            try
            {
                abrirConexao();
                instSql = "update bicicleta set marca = '" + bicicleta.marca + "', modelo = '" + bicicleta.modelo + "', fabricante = '" + bicicleta.fabricante + "' where codigo = '" + bicicleta.codigo + "'";
                fecharConexao(); ;
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao atualizar bicicleta: " + ex.Message);
            }
        }

        // Método Remover
        public void remover(Bicicleta bicicleta)
        {
            try
            {
                abrirConexao();
                instSql = "delete from bicicleta where codigo = '" + bicicleta.codigo + "'";
                fecharConexao(); ;
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao remover bicicleta: " + ex.Message);
            }
        }



        //método buscar bicicleta
        public List<Bicicleta> buscar(Bicicleta b)
        {
            List<Bicicleta> retorno = new List<Bicicleta>();


            try
            {
                abrirConexao();

                SqlCommand cmd = conBD.CreateCommand();

                cmd = new SqlCommand("SELECT bic_codigo FROM bicicleta where bic_codigo = @codigoBic", conBD);

                cmd.Parameters.Add("@codigoBic", SqlDbType.NVarChar, 6);
                cmd.Prepare();
                cmd.Parameters["@codigoBic"].Value = b.codigo;

                SqlDataReader DbReader = cmd.ExecuteReader();

                if (DbReader.HasRows)
                {
                    while (DbReader.Read())
                    {

                        b.codigo = DbReader.GetString(DbReader.GetOrdinal("bic_codigo"));
                        retorno.Add(b);
                    }
                }
                else
                    MessageBox.Show("Nenhum resultado encontrado");

                DbReader.Close();
                cmd.ExecuteNonQuery();
                fecharConexao();

            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao conectar: " + ex.Message);

            }

            return retorno;

        #endregion
        }
    }
}